/**
 * 基于ajaxupload 封装的上传,提示具有layer
 *
 * 配置参数详情见    @defaults
 */
$.extend({
	ldUpload : function(options, success) {
		var index; // layui 的关闭索引
		var fileNumber = 0; // 文件上传的次数
		var defaults = {  		//默认配置参数
			'name' : 'file',   //上传时流的文件名称
			'fileType' : 'images',  //上传 类型     目前可选参数   (images:图片 ,file:文件)
			'exts' : 'jpg|png|bmp|jpeg|gif|JPG|PNG|BMP|GIF|JPEG', //上传文件的后缀 限制  自定义
			'uploadURL' : 'uploadURL', //上传的路径     详情见mytags.jsp  有默认参数
			'uploadButton' : '#uploadButton', //需要绑定上传的按钮，建议用id参数
			'fileNumber' : 1, // 默认限制1个
			'deleteUpload' : '.deleteUpload', // 点击时，文件删除的计数class
			'deleteTemplateDiv' : '#deleteTemplate' //需要上传多个时配置的
		};
		var settings = $.extend(defaults, options);
		var button = $(settings.uploadButton);
		// 删除计数器
		$(document).on("click", settings.deleteUpload, function() {
				var $this = $(this);
				$this.closest("div").empty(); // 删除div
				fileNumber = fileNumber - 1;
		});
		new AjaxUpload(button, {
			// 文件上传地址 action
			// ://http://upload.credithegs.gov.cn/affixUpload?callback=http://localhost:8081/uploadCallback&serverLocation=&type=2
			// 图片上传你地址 action : settings.uploadUeRootPath +
			// "?action=uploadimage&sendRedirect=" + ctxPath + "/" +
			// settings.uploadCallbackURL,
			action : settings.uploadURL,
			name : settings.name,
			onSubmit : function(file, ext) {
				if (fileNumber > Number(settings.fileNumber)) { // 先校验个数
					layer.alert("上传失败，超过最大个数" + fileNumber);
					return false;
				}
				if ("images" == settings.fileType) {
					if (settings.exts != "*") {
						if (ext && new RegExp("^(" + settings.exts + ")$").test(ext)) {
							this.setData({
								'info' : '文件类型为图片'
							});
						} else {
							// alert()
							layer.alert('文件格式错误，请上传格式为' + settings.exts + ' 的图片', {
								icon : 7
							});
							return false;
						}
					}

				} else if ("file" == settings.fileType) {
					if (settings.exts != "*") {
						if (ext && new RegExp("^(" + settings.exts + ")$").test(ext)) {
							this.setData({
								'info' : '文件类型'
							});
						} else {
							layer.alert('文件格式错误，请上传格式为' + settings.exts + '的文件', {
								icon : 7
							});
							return false;
						}
					}
				} else {
					layer.alert('fileType参数错误！', {
						icon : 2
					});
					return false;
				}
				index = layer.load(2);
				this.disable();

			},
			onComplete : function(file, response) {
				layer.close(index);
				try {
					var result = eval("(" + response + ")");
					if (result.state == "SUCCESS" || !result.err) { // 判断是否上传成功
						// 图片or文件
						if (typeof success === 'function') {
							var uploadDiv; // 这里需要判断达到个数时，不追加模板了
							if (settings.fileNumber == 1) { // 单图，否则就是多图
								success(result);
							} else {
								fileNumber = fileNumber + 1; // 增加上传你的个数
								success(result, $.applyTemplate(settings));
							}
						}
						layer.msg('上传成功', {
							icon : 1,
							time : 1000
						});
					} else {
						layer.msg('上传失败', {
							icon : 1,
							time : 1000
						});
					}
					this.enable();
				} catch (e) {
					console.log(e);
					//error(e, response);
				}
			}
		});
	}, // 执行追加模板 并且返回追加模板的jquery对象
	applyTemplate : function(settings) {
	/*	var deleteTemplateDivHtml = $(settings.deleteTemplateDiv).html();
		var uploadDiv = $(settings.uploadButton).closest("div");
		uploadDiv.before(deleteTemplateDivHtml); // 在这个元素之前插入
		return uploadDiv.prev();*/
		return $(settings.deleteTemplateDiv);
	}

});

function success(response) {
	return response;
}

function error(e, response) {
	layer.alert(e, {
		icon : 7
	});
}
